package com.hon.legionnaire.negocio.vo;

import java.io.Serializable;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "produtoVenda")
@NamedQueries ({
	@NamedQuery(name = "loadAllProdutoVenda", query = "from ProdutoVendaVO as pc where pc.vendaVO.codigo = :codigo"),
})
public class ProdutoVendaVO implements Serializable {

	private static final long serialVersionUID = 1L;

	@EmbeddedId  
	private ProdutoVendaPK produtoVendaPK;
	
	@Column(name = "preco_venda")
	private Float precoVenda;
	
	@Column(name = "quantidade_vendida")
	private Integer quantidadeVendida;
	
	@JoinColumn(name="cod_venda", 
			referencedColumnName="cod_venda",
			nullable = false,
			insertable=false, updatable=false)
	@ManyToOne(optional=false, fetch= FetchType.LAZY)
	@Basic(optional=false)
	@Fetch(FetchMode.JOIN)
	private VendaVO vendaVO;
	
	@JoinColumn(name="cod_produto", 
			referencedColumnName="cod_produto",
			nullable = false,
			insertable=false, updatable=false)
	@ManyToOne(optional=false, fetch= FetchType.LAZY)
	@Basic(optional=false)
	@Fetch(FetchMode.JOIN)
	private ProdutoVO produtoVO;
		
	public ProdutoVendaVO(){
		produtoVendaPK = new ProdutoVendaPK();
	}
	
	public ProdutoVendaPK getProdutoVendaPK() {
		return produtoVendaPK;
	}

	public void setProdutoVendaPK(ProdutoVendaPK produtoVendaPK) {
		this.produtoVendaPK = produtoVendaPK;
	}

	public VendaVO getVendaVO() {
		return vendaVO;
	}

	public void setVendaVO(VendaVO vendaVO) {
		this.vendaVO = vendaVO;
	}

	public ProdutoVO getProdutoVO() {
		return produtoVO;
	}

	public Integer getQuantidadeVendida() {
		return quantidadeVendida;
	}

	public void setQuantidadeVendida(Integer quantidadeVendida) {
		this.quantidadeVendida = quantidadeVendida;
	}

	public void setProdutoVO(ProdutoVO produtoVO) {
		this.produtoVO = produtoVO;
	}

	public Float getPrecoVenda() {
		return precoVenda;
	}

	public void setPrecoVenda(Float precoVenda) {
		this.precoVenda = precoVenda;
	}
}